unit emparejar;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DBCtrls, ExtCtrls, Buttons, Grids, DBGrids, DB, Mask;

type
  TfrmEmparejar = class(TForm)
    Panel1: TPanel;
    rdbGrupo: TRadioButton;
    rdbItem: TRadioButton;
    rdbMat: TRadioButton;
    DBText1: TDBText;
    DBText2: TDBText;
    DBText3: TDBText;
    Panel3: TPanel;
    a: TSpeedButton;
    b: TSpeedButton;
    c: TSpeedButton;
    d: TSpeedButton;
    e: TSpeedButton;
    f: TSpeedButton;
    g: TSpeedButton;
    h: TSpeedButton;
    i: TSpeedButton;
    j: TSpeedButton;
    k: TSpeedButton;
    l: TSpeedButton;
    m: TSpeedButton;
    n: TSpeedButton;
    o: TSpeedButton;
    p: TSpeedButton;
    q: TSpeedButton;
    r: TSpeedButton;
    s: TSpeedButton;
    t: TSpeedButton;
    u: TSpeedButton;
    v: TSpeedButton;
    w: TSpeedButton;
    x: TSpeedButton;
    y: TSpeedButton;
    z: TSpeedButton;
    sMatEmp: TDataSource;
    Panel2: TPanel;
    grdMatEmp: TDBGrid;
    Panel4: TPanel;
    sIteMat: TDataSource;
    sEmp: TDataSource;
    sProv1: TDataSource;
    edtCantidad: TDBEdit;
    Label1: TLabel;
    Label2: TLabel;
    lblMaterial: TDBText;
    lblUnidad: TDBText;
    DBNavigator1: TDBNavigator;
    btnGrabar: TBitBtn;
    BitBtn1: TBitBtn;
    SpeedButton1: TSpeedButton;
    Panel5: TPanel;
    nvg: TDBNavigator;
    DBGrid1: TDBGrid;
    Label3: TLabel;
    procedure rdbGrupoClick(Sender: TObject);
    procedure rdbItemClick(Sender: TObject);
    procedure rdbMatClick(Sender: TObject);
    procedure aClick(Sender: TObject);
    procedure sIteMatDataChange(Sender: TObject; Field: TField);
    procedure sEmpStateChange(Sender: TObject);
    procedure btnGrabarClick(Sender: TObject);
    procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
    procedure grdMatEmpEnter(Sender: TObject);
    procedure grdMatEmpExit(Sender: TObject);
    procedure grdMatEmpDblClick(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure sProv1DataChange(Sender: TObject; Field: TField);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    constructor Enter(Aowner: TComponent);
  end;

var
  frmEmparejar: TfrmEmparejar;

implementation

uses MDatos, Recursos, abm;

{$R *.dfm}

procedure TfrmEmparejar.FormCreate(Sender: TObject);
begin
  Acomodo(frmEmparejar);
end;

constructor TfrmEmparejar.Enter(Aowner: TComponent);
begin
  inherited Create(Aowner);
  Datos.cProv1.Open;
  //frmEmparejar.aClick(a);
  a.Down := True;
  btnGrabar.Enabled := Datos.cEmp.ChangeCount > 0;
  sIteMat.OnDataChange (sIteMat, nil);
  ShowModal;
  Datos.cMatEmp.Close;
end;

procedure TfrmEmparejar.rdbGrupoClick(Sender: TObject);
begin
  if rdbGrupo.Checked then
    nvg.DataSource := frmABM.sGrupo;
end;

procedure TfrmEmparejar.rdbItemClick(Sender: TObject);
begin
  if rdbItem.Checked then
    nvg.DataSource := frmABM.sItem;
end;

procedure TfrmEmparejar.rdbMatClick(Sender: TObject);
begin
  if rdbMat.Checked then
    nvg.DataSource := frmABM.sIteMat;
end;

procedure TfrmEmparejar.aClick(Sender: TObject);
begin
  Datos.cMatEmp.Params [0].AsString := TSpeedButton(Sender).Caption+'%';
  Datos.cMatEmp.Params [1].AsString := LowerCase(TSpeedButton(Sender).Caption)+'%';
  Datos.cMatEmp.Params [2].AsInteger := Datos.cProv1ID_PROVEEDOR.AsInteger;
  Datos.cMatEmp.Close;
  Datos.cMatEmp.Open;
end;

procedure TfrmEmparejar.sIteMatDataChange(Sender: TObject; Field: TField);
begin
  //if frmEmparejar.Visible then
    if Datos.AntesdeCerrar(Datos.cEmp) then
    begin
      Datos.cEmp.Params [0].AsInteger := Datos.cIteMatID_MATERIAL.AsInteger;
      Datos.cEmp.Params [1].AsInteger := Datos.cProv1ID_PROVEEDOR.AsInteger;
      if Datos.cEmp.State = dsInactive then
        Datos.cEmp.Open
      else
      begin
        Datos.cEmp.Close;
        Datos.cEmp.Open;
      end;
    end;
end;

procedure TfrmEmparejar.sEmpStateChange(Sender: TObject);
begin
  //if frmEmparejar.Visible then
    btnGrabar.Enabled := Datos.cEmp.ChangeCount > 0;
end;

procedure TfrmEmparejar.btnGrabarClick(Sender: TObject);
begin
  if Datos.cEmp.ApplyUpdates(0) = 0 then
  begin
    btnGrabar.Enabled := False;
    Datos.cEmp.Refresh;
  end
  else Application.MessageBox('Error al grabar en tabla Emparejamientos', 'Error', mb_Ok+mb_IconError);
end;

procedure TfrmEmparejar.DBNavigator1Click(Sender: TObject;
  Button: TNavigateBtn);
begin
  if Button in [nbDelete, nbPost] then
    sEmp.OnStateChange (Sender);
end;

procedure TfrmEmparejar.grdMatEmpEnter(Sender: TObject);
begin
  confoco(Sender);
end;

procedure TfrmEmparejar.grdMatEmpExit(Sender: TObject);
begin
  sinfoco(Sender);
end;

procedure TfrmEmparejar.grdMatEmpDblClick(Sender: TObject);
begin
  with TDBGrid(Sender).DataSource.DataSet do
    if not FieldByName('id_material').IsNull and (sEmp.State in [dsBrowse])
    and not Datos.cIteMat.IsEmpty then
      //if Datos.cEmp.IsEmpty then
        Datos.cEmp.Insert
      {else
      begin
        Datos.cEmp.Edit;
        Datos.cEmpIDEM_MATERIAL.AsInteger := Datos.cMatEmpID_MATERIAL.AsInteger;
        Datos.cEmpMATERIAL.AsString := Datos.cMatEmpMATERIAL.AsString;
        Datos.cEmpID_UNIDAD.AsInteger := Datos.cMatEmpID_UNIDAD.AsInteger;
      end};
      edtCantidad.SetFocus; 
end;

procedure TfrmEmparejar.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
  CanClose := Datos.AntesdeCerrar(Datos.cEmp) = True;
  if CanClose then  Datos.cEmp.Close;
end;

procedure TfrmEmparejar.sProv1DataChange(Sender: TObject; Field: TField);
begin
  //if frmEmparejar.Visible then
  //begin
    a.Down := True;
    frmEmparejar.aClick(a);
    frmEmparejar.sIteMatDataChange (Sender, nil);
  //end;
end;

procedure TfrmEmparejar.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Action := caFree;
end;

end.
